Computer software applications often are developed through a trial-and-error testing process. In such a process, an application is written and the behavior of the application is tested. The application is then modified based on the tested behavior, and the modified application is retested. Testing the application after a modification has been made is useful for determining whether the behavior of the application has regressed as a result of the modification. Such testing may be referred to as “regression testing.”
Regression testing of software applications that interact with other applications or external sources/destinations for data (e.g., a database) may pose particular difficulties because of the complexity of the interactions with the external sources/destinations. For example, testing an application that interacts with a database may require restoration of all or a portion of the database to a known state at the start of each test to ensure that the application is always tested against the same data. Custom-built software scripts can be used to simulate a database by sending and receiving only the data required by a software application during a regression test. However, when a computation is performed by executing a sequence of software applications that interact with, and sometimes alter, a database, regression testing the individual software applications may be difficult because each application may require that the database be in a particular known, intermediate state when the application begins to interact with the database.